# 切片就是从列表中取出一部分元素
nums = [9, 6, 1, 4, 2, 8, 1]

# 语法:
#   nums[start_idx:end_idx],步长默认是1
#   从索引start_idx开始,一直到end_idx结束的列表,抽取为一个新的列表,
#   不包含end_idx索引对应的元素 [start_idx, end_idx)
print("原始列表:", nums)
print("nums[1:5]切片结果:", nums[1:5])

# 如果抽取[1:2],结果是列表还是元素? 列表
print("nums[1:2]切片结果:", nums[1:2])

# 可不可以用负数索引做切片?
print("nums[-5:-2]切片结果:", nums[-5:-2])

# 索引开始和结束顺序是否可以颠倒? 可以,但是结果为空列表
print("nums[5:1]切片结果:", nums[5:1])

# 索引开始和结束可以省略吗?
#   省略开始,默认从0开始
#   省略结束,默认到列表结束
print("nums[:5]切片结果:", nums[:5])
print("nums[5:]切片结果:", nums[5:])

# 省略开始和结束,默认就是取所有元素
print("nums[:]切片结果:", nums[:])

# 切片步长
#   语法: nums[start_idx:end_idx:step]
#   从索引start_idx开始,一直到end_idx结束的列表,抽取为一个新的列表,
#   不包含end_idx索引对应的元素 [start_idx, end_idx)
#   step表示步长,默认是1,可以省略不写
print("nums[5:1:-1]切片结果:", nums[5:1:-1])  # 可以指定步长为负数,表示从后往前取

print("nums[1:5:2]切片结果:", nums[1:5:2])
